package main

//import (
//	"context"
//	"errors"
//	"fmt"
//	"sync/atomic"
//	"time"
//)
//
//var messInitState atomic.Bool
//
//func main() {
//	var ctx context.Context
//	ctx = context.Background()
//	messRegChk(ctx)
//	select {}
//}
//func messInitReg() error {
//	if messInitState.Load() {
//		return nil
//	}
//	if time.Now().UnixNano()%2 == 0 {
//		messInitState.Store(true)
//		return nil
//	} else {
//		return errors.New("Error! ")
//	}
//}
//
//func messRegChk(ctx context.Context) {
//	var tmpTicker *time.Ticker
//	var err error
//	var chkInterval int64
//	const (
//		maxChkInterval = 86400
//		defMinDuration = 64
//		minChkInterval = 2
//	)
//	chkInterval = minChkInterval
//	tmpTicker = time.NewTicker(time.Duration(chkInterval) * time.Second)
//	for {
//		select {
//		case <-ctx.Done():
//			return
//		case <-tmpTicker.C:
//			err = messInitReg()
//			if err == nil {
//				chkInterval = chkInterval + chkInterval
//				if chkInterval > maxChkInterval {
//					chkInterval = minChkInterval
//				}
//				fmt.Println(time.Now(), "消息服务重新注册成功！检测周期调整为", chkInterval.Seconds(), "s")
//			} else {
//				chkInterval = chkInterval / 2
//				if chkInterval < defMinDuration {
//					chkInterval = defMinDuration
//				}
//				fmt.Println(time.Now(), "消息服务重新注册失败！检测周期调整为", chkInterval.Seconds(), "s")
//			}
//			tmpTicker.Reset(time.Duration(chkInterval) * time.Second)
//		}
//	}
//}
